这个问题在这里已经有了答案:Ruby,removelastNcharactersfromastring?(13个答案)关闭5年前。在ruby中,我只想去掉字符串的最后n个字符,但以下不起作用"string"[0,-3]也不"string".slice(0,-3)我想要一个干净的方法,而不是类似的东西"string".chop.chop.chop这可能是微不足道的,请任何人教我!谢谢!
我正在寻找一种将空字符串转换为nil的方法使用Ruby到位。如果我最终得到一个空格字符串,我可以这样做"".strip!这将给我空字符串"".我希望能够做的是这样的事情。"".strip!.to_nil!这将用nil替换空字符串.to_nil!会将字符串更改为nil如果是.empty?就直接否则,如果字符串不为空,则不会更改。这里的关键是我希望它直接发生而不是通过诸如f=niliff.strip!.empty? 最佳答案 干净的方法是使用presence。让我们测试一下。''.presence#=>nil''.presence#=>
我有一个字符串"car\"我将把它存储在postgres数据库中。我想在保存之前从字符串中删除反斜杠。有没有办法在ruby或postgres中做到这一点?当我尝试在ruby中删除它时,它会将反斜杠后的引号视为转义字符。 最佳答案 见以下代码:1.9.3p125:022>s="cat\\"=>"cat\\"1.9.3p125:023>putsscat\=>nil1.9.3p125:024>s.chomp("\\")=>"cat"1.9.3p125:025> 关于ruby-on-ra
我有两个字符串数组,我想找到不在两者交集的字符串集。我想要的是MATLAB中SETXOR的等价物:http://www.mathworks.com/help/techdoc/ref/setxor.html我将术语集与数组互换使用。当然,我本可以很容易地自己写出这个问题,但我想我应该问。 最佳答案 array1+array2-(array1&array2)比写问题要短...顺便说一下,Ruby有一个类Set,所以最好不要将这个词用作数组的同义词。 关于ruby-是否有Ruby函数可以对
我正在尝试解析一个多行字符串并让该行的其余部分遵循某种模式。文本:hellojohnyourusernameis:jjthanksforsigningupIwanttoextractjj,akaeverythingafter"yourusernameis:"Oneway:text="hellojohn\nyourusernameis:jj\nthanksforsigningup\n"match=text[/yourusernameis:(.*)/]value=$1但是这让我想起了perl...并没有像我告诉ruby那样自然地“阅读”。有没有更简洁的方法?又名“ruby”方式?谢谢
用户以下列形式输入数字:1-800-432-4567800-432-4567800.432.4566(800)432.4567+1(800)-432-45678004324567我希望所有这些都变成一个没有特殊字符的剥离版本,如18004324567。数据以String的形式出现,因此不需要进行字符串检查。我的方法如下:defcanonical_formnumbera=remove_whitespacesnumber#toclearallwhitespacesinbetweena.gsub(/[()-+.]/,'')enddefremove_whitespacesnumbernumbe
我有一个heredoc,我正在使用#{}插入一些其他字符串,但有一个实例我也想写实际文本#{some_ruby_stuff}在我的heredoc中,没有对其进行插值。有没有办法逃避#{.我试过“\”,但没有成功。虽然它逃脱了#{},它还包括“\”:>>"development\#{RAILS_ENV}\n" 最佳答案 对于无需手动转义所有潜在插值的heredoc,您可以使用单引号样式heredoc。它是这样工作的:item= 关于ruby-on-rails-如何从字符串插值中逃脱#{,我
我想从ActiveSupport::SafeBuffer中获取String对象。方法to_s返回相同类型的ActiveSupport::SafeBuffer。只有to_sym.to_s返回字符串,但这更像是一种hack。这是我的控制台正在播放:irb(main):008:0>s=ActiveSupport::SafeBuffer.new("asdf")#=>"asdf"irb(main):009:0>s.class#=>ActiveSupport::SafeBufferirb(main):010:0>s.to_s.class#=>ActiveSupport::SafeBufferirb
我想插入一个每5个字符标记一次。输入:s='HelloWorld-Helloguys'预期结果:HelloWorld-Helloguys 最佳答案 s='HelloWorld-Helloguys's.scan(/.{5}|.+/).join("")解释:Scan将正则表达式的所有匹配项分组到一个数组中。.{5}匹配任意5个字符。如果字符串末尾有剩余字符,它们将被.+匹配。用你的字符串加入数组 关于ruby-如何在Ruby字符串中每5个字符插入标记?,我们在StackOverflow上找到
我有一个类似“2011-06-02T23:59:59+05:30”的字符串。我想将它转换为日期格式,只需要解析日期“2011-06-02”。 最佳答案 对于Ruby1.9.2:require'date'#Ifnotalreadyrequired.IfinRailsthenyoudon'tneedthisline).putsDateTime.parse("2011-06-02T23:59:59+05:30").to_date.to_s 关于Ruby-将字符串转换为日期,我们在StackOv